QuickSight と別リージョンの EC2(MySQL) を接続してみた

QuickSight と別リージョンの EC2(MySQL) を接続してみた

Clock Icon2024.12.27

今回は、クロスリージョンの EC2(MySQL) をソースとして QuickSight 接続を行ってみました。
構成は以下です。

  • 東京と大阪を VPC ピアリングでつなぐ。
  • 大阪のパブリックサブネットにある EC2(MySQL) をデータソースとする。

QStoEC2_CrossRegion.drawio

※今回行うのは、以下ブログのクロスリージョン版です。似たような手順が多いため、適宜こちらのブログもご参照ください。
https://dev.classmethod.jp/articles/connecting-quicksight-to-mysql-on-ec2/

VPC の作成

  • 東京リージョンのVPCの IPv4 CIDR
    • sunagawa-vpc
    • 10.0.0.0/16

スクリーンショット 2024-12-27 16.40.26

  • 大阪リージョンのVPCの IPv4 CIDR
    • sunagawa-osaka-vpc
    • 172.16.0.0/16

スクリーンショット 2024-12-27 16.42.07

EC2 作成 in 大阪リージョン

以下構成で作成しました。

  • AmazonLinux 2023
  • パブリック IP あり
  • パブリックサブネットへ配置

パブリックサブネットへ配置した理由は、ローカルから ssh で直接ログインするためです。一方、プライベートサブネットに EC2 を配置しても今回の QuickSight からの接続は同様に行えると思いますので、任意に設定ください。

※プライベートサブネットに EC2 を配置する場合は、次項の「EC2 に MySQL をインストール」の際に MySQL パッケージをインターネット上からダウンロードできるよう、NAT などを用いて EC2 → インターネットの動線を確保しておいてください。

EC2 に MySQL をインストール

以下ブログの「EC2 に MySQL をインストール」の手順を実施します。
https://dev.classmethod.jp/articles/connecting-quicksight-to-mysql-on-ec2/

上記ブログに従い、以下の3つの作業を実施してください。

  • MySQL のインストール/ログイン
  • QuickSight から MySQL へ接続するための MySQL サンプルユーザーの作成
  • 適当なデータベースとテーブルの作成

VPC ピアリングの作成

「VPC コンソール → ピアリング接続 → ピアリング接続を作成」から VPC ピアリングを作成します。大阪リージョンからの作成でもいいかもしれませんが、今回は東京リージョンのコンソールから作成します。

ローカル VPC に東京リージョンの VPC、もう一方の VPC に大阪リージョンの VPC ID を記載し、「ピアリング接続を作成」します。
image (3)

上記完了しても、まだピアリング接続はできていません。大阪リージョン側でこのピアリング作成の承認を行う必要があるため、大阪リージョンの「VPCコンソール → ピアリング接続」のアクションタブより「リクエストを承諾」します。
スクリーンショット 2024-12-27 16.48.42

その後、大阪リージョンのピアリング接続の DNS タブより、右上のDNS設定を編集を選択。
スクリーンショット 2024-12-27 16.52.29

「アクセプタ DNS 解決」の欄にチェックを入れて「変更を保存」します。
スクリーンショット 2024-12-27 16.55.07

以下のように有効化されているか確認します。
スクリーンショット 2024-12-27 17.03.53

東京リージョン側のピアリング接続でもリクエスタ(東京)→アクセプタ(大阪)が “有効” になっていることを確認します。
スクリーンショット 2024-12-27 17.05.47

東京リージョンのプライベートサブネット(1a, 1c)のルートテーブルに大阪 VPC へのルートを追加します。この 1a, 1c に後ほど QuickSight ENI を作成します。送信先およびターゲットは以下です。

  • 送信先:172.16.0.0/16 (大阪リージョン VPC の CIDR)
  • ターゲット:ピアリング接続 ID

1a
スクリーンショット 2024-12-27 17.07.28

1c
スクリーンショット 2024-12-27 17.08.50

大阪リージョンの EC2 を立てているパブリックサブネットのルートテーブルに東京 VPC へのルートを追加します。

  • 送信先:10.0.0.0/16(東京リージョン VPC の CIDR)
  • ターゲット:ピアリング接続 ID
    スクリーンショット 2024-12-27 17.10.24

QuickSight ENI 用 のセキュリティグループ作成

東京リージョンに QuickSight 用のセキュリティグループを作成し、大阪リージョンのVPCからの接続を許可します。

本当は、大阪リージョンの EC2 のセキュリティグループからのインバウンドを許可としたいのですが、以下ブログにある通り設定できません。
https://dev.classmethod.jp/articles/security-group-source-from-different-vpc/

なので、以下のように設定します。

  • インバウンド

    • タイプ:すべてのTCP
    • プロトコル:TCP
    • ポート範囲:0-65535
    • ソース:172.16.0.0/16 (大阪リージョンの VPC CIDR)
      image (11)
  • アウトバウンド

    • タイプ:すべてのトラフィック
    • プロトコル:すべて
    • ポート範囲:すべて
    • 送信先:0.0.0.0/0

大阪リージョン EC2 用 セキュリティグループ設定

大阪リージョンの EC2 にアタッチしたセキュリティグループのインバウンド/アウトバウンド ルールを以下のように設定します。ssh 用のルールも設定していますが、これはローカルから EC2 にアクセスするためのものです。

  • インバウンド
    • タイプ:すべてのTCP
    • プロトコル:TCP
    • ポート範囲:0-65535
    • ソース: 10.0.0.0/16 (東京リージョンの VPC CIDR)

スクリーンショット 2024-12-27 17.15.19

  • アウトバウンド
    • タイプ:すべてのトラフィック
    • プロトコル:すべて
    • ポート範囲:すべて
    • 送信先:0.0.0.0/0

QuickSight 実行ロールの作成

以下の設定でロールを作成します。詳細は公式ドキュメントをご参照ください。
https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/vpc-creating-a-connection-in-quicksight-console.html

カスタム信頼ポリシー

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "quicksight.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

許可ポリシー

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups"
            ],
            "Resource": "*"
        }
    ]
}

QuickSight アカウント設定メニューからVPC接続定義を作成

QuickSight ホーム画面 → 右上プロフィールアイコン → QuickSight を管理 → VPC 接続の管理 → VPC接続の追加 の順に選択します。その後以下のように設定し、画像下側の "追加" ボタンを選択。

  • VPC接続名:<任意の名前>
  • VPC ID:作成した東京リージョンの VPC ID
  • 実行ロール:前述の実行ロールを指定
  • サブネット:1a と 1c のプライベートサブネットを指定
  • セキュリティグループID:前述で作成済みの QuickSight アクセス用のセキュリティグループ ID

スクリーンショット 2024-12-05 22.00.55

VPC 接続が作成されます。以下のようにステータスが AVAILABLE になれば OK です。
スクリーンショット 2024-12-27 17.18.28

ENI も2つ作成されます。(EC2コンソールから確認できます)
スクリーンショット 2024-12-27 17.22.08

QuickSight データセットの作成

右上の "新しいデータセット" を選択します。
image (4)

データセットの中から「MySQL」を選択します。
image5

データソースの設定は以下のようにします。ポイントはデータベースサーバーとして大阪リージョン EC2 のプライベート IP を指定する部分です。

  • データソース名:<任意の名前>
  • 接続タイプ:先ほど作成した VPC 接続を選択
  • データベースサーバー:<大阪リージョン EC2 のプライベート IP>
  • ポート:3306
  • データベース名:前述の項で作成したデータベース名
  • ユーザー名:前述した QuickSight 接続用に作成したユーザー名
  • パスワード:MySQL ログイン時のパスワード
  • SSL の有効化:チェックを外す

完成形が以下画像です。画像左下のボタンは "接続を検証" するボタンなので、ボタンを押下して以下画像のように "検証済み" と表示されることを確認してください。確認できたら、右下の "データソースを作成" を選択します。あとは接続した MySQL データを使って、可視化してみてください。これで別リージョンの EC2(MySQL) に繋げることができました。
スクリーンショット 2024-12-27 17.23.50

終わりに

今回は QuickSight と別リージョンの EC2(MySQL) を繋げてみました。
ピアリングの使い方が実践的に分かったので面白かったです。
本記事がどなたかのお役に立てば幸いです。

参考文献

https://dev.classmethod.jp/articles/visualize-redshift-in-another-region-from-quicksight/
https://dev.classmethod.jp/articles/Install-mysql-on-al2023-and-login/
https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/vpc-qeni.html

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.